package com.hy.demo.util;

import android.content.Context;
import android.content.res.XmlResourceParser;

import com.hy.demo.model.MenuInfo;

import java.util.ArrayList;
import java.util.List;

public class MenuUtil {


    /**
     * 获取菜单列表
     *
     * @param xmlId 菜单xml文件的ResourceId
     */
    public static List<MenuInfo> getMenus(Context cxt, int xmlId) {
        List<MenuInfo> menus = new ArrayList<>();
        // 判断是否到了文件的结尾
        try {
            XmlResourceParser xrp = cxt.getResources().getXml(xmlId);
            MenuInfo menu = null;
            while (xrp.getEventType() != XmlResourceParser.END_DOCUMENT) {
                // 文件的内容的起始标签开始，注意这里的起始标签是test.xml文件里面<resources>标签下面的第一个标签
                if (xrp.getEventType() == XmlResourceParser.START_TAG) {
                    String tagName = xrp.getName();
                    int size = xrp.getAttributeCount();
                    if (tagName.endsWith("item")) {
                        menu = new MenuInfo();
                        for (int i = 0; i < size; i++) {
                            String key = xrp.getAttributeName(i);
                            String value = xrp.getAttributeValue(i).replace("@", "");
                            if (key.contains("id")) {
                                menu.setId(Integer.parseInt(value));
                            } else if (key.contains("icon")) {
                                menu.setIcon(Integer.parseInt(value));
                            } else if (key.contains("title")) {
                                menu.setTitle(getMenuTitle(cxt, value));
                            } else {
                                menu.putValue(key, value.replace("@", ""));
                            }
                        }
                        menus.add(menu);
                    }
                }
                xrp.next();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return menus;
    }

    public static String getMenuTitle(Context cxt, String data) {
        if (data != null) {
            try {
                int id = Integer.parseInt(data);
                return cxt.getString(id);
            } catch (Exception ignored) {

            }
        }
        return data;
    }
}
